home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / P_ROBO31.ZIP / M1_GO.PR < prev    next >
Text File  |  1989-10-23  |  2KB  |  89 lines

  1. (**************************************************************************)
  2. (*                             W A R N I N G                              *)
  3. (*                                                                        *)
  4. (*  This Robot has NOT been designed to take advantage of the advanced    *)
  5. (*  features of P-ROBOTS, such as, Shields, Fuel, Teams or Obstructions.  *)
  6. (**************************************************************************)
  7.  
  8.   PROCEDURE M1_GO;
  9.     { M1-GO is based on a Japanese 60's TV drama "Ultra-Q"
  10.       Original C-Robot by Hortense Endoh }
  11.  
  12.   VAR
  13.     deg, dego, dir, doo, dmg : Integer;
  14.     Range, ranrnd, incr, ro, spd : Integer;
  15.  
  16.     PROCEDURE Go_hell;
  17.     BEGIN
  18.       WHILE (loc_y > 10) DO
  19.         IF (loc_y < 60)
  20.         THEN drive(270, 10)
  21.         ELSE drive(270, 100);
  22.     END; {Go_Hell}
  23.  
  24.     PROCEDURE shoot;
  25.     BEGIN
  26.       Range := scan(deg, 10);
  27.       drive(dir, spd);
  28.       IF (Range <> 0) THEN BEGIN
  29.         ro := Range-(ro-Range) DIV 2;
  30.         doo := deg-(doo-deg) DIV 2;
  31.         IF (ro > 40) THEN cannon(doo, ro);
  32.         dego := deg;
  33.       END
  34.       ELSE BEGIN
  35.         IF (dego-deg > 0) THEN BEGIN
  36.           incr := 20;
  37.           dego := deg+30;
  38.         END
  39.         ELSE BEGIN
  40.           IF (dego-deg < 0) THEN BEGIN
  41.             incr := -20;
  42.             dego := deg-30;
  43.           END;
  44.         END;
  45.         IF (deg > 180) THEN BEGIN
  46.           deg := 0;
  47.           dego := 30;
  48.         END
  49.         ELSE BEGIN
  50.           IF (deg < 0) THEN BEGIN
  51.             deg := 180;
  52.             dego := 150;
  53.           END
  54.           ELSE deg := deg+incr;
  55.         END;
  56.       END;
  57.     END; {Shoot}
  58.  
  59.  
  60.   BEGIN {M1_GO Main}
  61.     deg := 0; dego := 20; incr := 20; spd := 100;
  62.     Go_hell;
  63.  
  64.     REPEAT
  65.       dir := 0; dmg := damage;
  66.       WHILE (loc_x < 800) DO BEGIN
  67.         shoot;
  68.         IF (dmg <> damage) THEN BEGIN
  69.           dir := 180;
  70.           WHILE (loc_x > 200) DO shoot;
  71.           dir := 0; dmg := damage;
  72.         END;
  73.       END;
  74.  
  75.       dir := 180; dmg := damage;
  76.       WHILE (loc_x > 200) DO BEGIN
  77.         shoot;
  78.         IF (dmg <> damage) THEN BEGIN
  79.           dir := 0;
  80.           WHILE (loc_x < 800) DO shoot;
  81.           dir := 180; dmg := damage;
  82.         END;
  83.       END;
  84.  
  85.     UNTIL Dead OR Winner;
  86.  
  87.   END; { end of M1_GO Main }
  88.  
  89.